如同前面提到的,目前的TensorFlow,在PyTorch的推波助瀾下,推出更容易讓新手快速上手的Eager Execution。
從此,TF的世界可以更有效分成互動式及生產線式兩種。
tf.Session()
啟動的期間使用sess.run()
才真正執行;其餘時間都只是一些metadata
紀錄可能填入的資料。import tensorflow as tf
def fuc(a, b):
return a + b
with tf.Session() as sess:
a = tf.constant([
[1, 2, 3, 4],
[4, 2, 3, 1]
])
b = tf.constant([
[9, 4, 3, 5],
[6, 2, 3, 1]
])
c = fuc(a, b)
print(c)
print(sess.run(c))
對應的結果:
Tensor("add:0", shape=(2, 4), dtype=int32)
[[10 6 6 9]
[10 4 6 2]]
這種非即時性對於剛接觸的使用者需要更多的時間適應,特別是程式碼當中出現for-loop
的狀況。
這邊提供大家兩個可能的方法:
from tensorflow.python import debug as tf_debug